package org.argus.management.domain;

import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.argus.common.mybatis.base.BaseEntity;

import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

/**
 * 菜单信息表
 */
@TableName("sys_menu")
@Data
public class Menu extends BaseEntity implements Serializable {

    /**
     * 菜单类型（0-菜单，1-iframe，2-外链，3-按钮）
     */
    private Integer menuType;

    /**
     * 父级菜单ID
     */
    private Long parentId;

    /**
     * 菜单名称（兼容国际化，如果用国际化的写法就必须在根目录的`locales`文件夹下对应添加）
     */
    private String title;

    /**
     * 路由名称（必须唯一并且和当前路由`component`字段对应的页面里用`defineOptions`包起来的`name`保持一致）
     */
    private String name;

    /**
     * 路由路径
     */
    private String path;

    /**
     * 组件路径（传`component`组件路径，那么`path`可以随便写，如果不传，`component`组件路径会跟`path`保持一致）
     */
    private String component;

    /**
     * 菜单排序（平台规定只有`home`路由的`rank`才能为`0`）
     * 由于rank是关键字，数据库字段名为`page_rank`,但Vue pure admin为 rank
     */
    @JsonProperty("rank")
    private Integer pageRank;

    /**
     * 路由重定向
     */
    private String redirect;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 右侧图标
     */
    private String extraIcon;

    /**
     * 进场动画（页面加载动画）
     */
    private String enterTransition;

    /**
     * 离场动画（页面加载动画）
     */
    private String leaveTransition;

    /**
     * 菜单激活（用于通过`query`或`params`传参的路由，通过设置`activePath`指定激活菜单的`path`）
     */
    private String activePath;

    /**
     * 权限标识（按钮级别权限设置）
     */
    private String auths;

    /**
     * 链接地址（需要内嵌的`iframe`链接地址）
     */
    private String frameSrc;

    /**
     * 加载动画（内嵌的`iframe`页面是否开启首次加载动画）
     */
    private Boolean frameLoading;

    /**
     * 缓存页面（是否缓存该路由页面，开启后会保存该页面的状态，刷新后清空）
     */
    private Boolean keepAlive;

    /**
     * 禁止添加到标签页（当前菜单名称或自定义信息）
     */
    private Boolean hiddenTag;

    /**
     * 菜单显示状态（是否显示该菜单）
     */
    private Boolean showLink;

    /**
     * 父级菜单显示状态（是否显示父级菜单）
     */
    private Boolean showParent;

    private static final long serialVersionUID = 1L;
}